#ifndef _PASTEACTION_
#define _PASTEACTION_

#include <vector>
#include "BaseAction.hpp"
#include "Content/Map.hpp"
#include "Utilities/StringHelper.hpp"
#include "UI/ClipboardPanel.hpp"
#include "MapResizer.hpp"

class PasteAction:public BaseAction{
private:
    struct TileChanged{
        int tileX;
        int tileY;
        int layer;
        int val;
        int original;
    };
    Map* target;
    vector<TileChanged> tiles;
    int destinationX;
    int destinationY;
    int clipboardWidth;
    int clipboardHeight;
public:
    MapResizer::ResizeInfo* resizeResult;
    
    PasteAction(Map* map, vector<ClipboardPanel::CopyTile>* clipboard, int destX, int destY);
    virtual void perform();
    virtual void undo();
    ~PasteAction();
};

#endif